#pragma once
#include "StdAfx.h"
class CameraDesc
	:public ActorDesc
{
public:
	CameraDesc();
	Vec3 At, Up;
	double FOV, FarViewPlane, NearViewPlane, AspectRatio;
};
class Camera :
	public Actor
{
public:
	Camera(CameraDesc&);
	~Camera(void);

	Vec3 At, Up, Focus;
	bool bFocus;
	Rotator OrbitRot;
	real FocusDistance;
	double FOV, AspectRatio, FarViewPlane, NearViewPlane;
	void UpdateView(int w, int h);
	void ResetView();
	void Move(Vec3);
	virtual Vec3 GetPos();
	Vec3 GetLookDir();
	Vec3 GetStrafeDir();
	Vec3 GetUp();
	Vec3 GetAt();
	void ResetLook();
	void Orbit(Rotator);
	void Rotate(Rotator);
	void SetLookDir(Vec3);
	void SetUp(Vec3);
};

